home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C & C++ Multimedia Cyber Classroom
/
C and C++ Multimedia Cyber Classroom (Prentice Hall) (1998).iso
/
cpphtp2
/
code.jar
/
code
/
ch09
/
fig09_09.txt
< prev
next >
Wrap
Text File
|
1998-02-27
|
2KB
|
84 lines
1 // Fig. 9.9: circle2.h
2 // Definition of class Circle
3 #ifndef CIRCLE2_H
4 #define CIRCLE2_H
5
6 #include "point2.h"
7
8 class Circle : public Point {
9 friend ostream &operator<<( ostream &, const Circle & );
10 public:
11 // default constructor
12 Circle( double r = 0.0, int x = 0, int y = 0 );
13 void setRadius( double ); // set radius
14 double getRadius() const; // return radius
15 double area() const; // calculate area
16 protected: // accessible to derived classes
17 double radius; // radius of the Circle
18 };
19
20 #endif
21
22
23 // Fig. 9.9: circle2.cpp
24 // Member function definitions for class Circle
25 #include <iostream.h>
26 #include <iomanip.h>
27 #include "circle2.h"
28
29 // Constructor for Circle calls constructor for Point
30 // with a member initializer and initializes radius
31 Circle::Circle( double r, int a, int b )
32 : Point( a, b ) // call base-class constructor
33 { setRadius( r ); }
34
35 // Set radius
36 void Circle::setRadius( double r )
37 { radius = ( r >= 0 ? r : 0 ); }
38
39 // Get radius
40 double Circle::getRadius() const { return radius; }
41
42
43 // Calculate area of Circle
44 double Circle::area() const
45 { return 3.14159 * radius * radius; }
46
47 // Output a circle in the form:
48 // Center = [x, y]; Radius = #.##
49 ostream &operator<<( ostream &output, const Circle &c )
50 {
51 output << "Center = " << static_cast< Point > ( c )
52 << "; Radius = "
53 << setiosflags( ios::fixed | ios::showpoint )
54 << setprecision( 2 ) << c.radius;
55
56 return output; // enables cascaded calls
57 }
58
59
60 // Fig. 9.9: fig09_09.cpp
61 // Driver for class Circle
62 #include <iostream.h>
63 #include "point2.h"
64 #include "circle2.h"
65
66 int main()
67 {
68 Circle c( 2.5, 37, 43 );
69
70 cout << "X coordinate is " << c.getX()
71 << "\nY coordinate is " << c.getY()
72 << "\nRadius is " << c.getRadius();
73
74 c.setRadius( 4.25 );
75 c.setPoint( 2, 2 );
76 cout << "\n\nThe new location and radius of c are\n"
77 << c << "\nArea " << c.area() << '\n';
78
79 Point &pRef = c;
80 cout << "\nCircle printed as a Point is: " << pRef << endl;
81
82 return 0;
83 }